home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2003 July / CD 2 Debian 3.0r1 / Debian.iso / isolinux / root.bin / root / sbin / MAKEDEV < prev    next >
Encoding:
Text File  |  2002-03-02  |  42.5 KB  |  1,850 lines

  1. #! /bin/sh -
  2.  
  3. RCSID='$Id: MAKEDEV 2.3 1997/09/29 19:03:13 johnsonm Exp $'
  4.  
  5. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  6. # Customisation:
  7. #   The devices fall into various classes.  This section contains the mapping
  8. # from a class name into a group name and permission.
  9. #   You will almost certainly need to edit the group name to match your
  10. # system, and you may change the permissions to suit your preference.  These
  11. # lines _must_ be of the format "user group perm".
  12.  
  13.  public="  root root   0666"
  14. private="  root root   0600"
  15.  system="  root root   0660"
  16.    kmem="  root kmem   0640"
  17.     tty="  root tty    0666"
  18.    cons="  root tty    0600"
  19.     vcs="  root root   0600"
  20. dialout="  root dialout 0660"
  21.     dip="  root dip    0660"
  22.   mouse="  root root   0660"
  23. printer="  root lp     0660"
  24.  floppy="  root floppy 0660"
  25.    disk="  root disk   0660"
  26.    scsi="  root root   0600"
  27.   cdrom="  root cdrom  0660"
  28.    tape="  root tape   0660"
  29.   audio="  root audio  0660"
  30.   video="  root video  0660"
  31.      fb="  root video  0620"
  32.   ibcs2="  root root   0666"
  33. scanner="  root root   0666"
  34.    coda="  root root   0600"
  35.   ipsec="  root root   0200"
  36. readable="  root root   0444"
  37.  
  38. MAXVT=63
  39.  
  40. # defaults for $major_*
  41. major_ide0=3
  42. major_ide1=22
  43. major_sd=8
  44. major_lp=6
  45.  
  46. # Remark: OSS/Linux becomes major_OSSLinux
  47.  
  48. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  49.  
  50. # don't stomp on devfs users
  51. if  [ -c .devfsd ]
  52. then
  53.     echo ".devfsd presence implies active DevFS.  Aborting MAKEDEV invocation."
  54.     # use exit 0, not 1, so postinst scripts don't fail on this
  55.     exit 0
  56. fi
  57.  
  58. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  59.  
  60. procfs=/proc
  61.  
  62. opt_v=
  63. opt_d=
  64. opt_n=
  65.  
  66. while [ $# -ge 1 ]
  67. do
  68.     case $1 in
  69.         --)    shift; break ;;
  70.         -v)    shift; opt_v=1 ;;
  71.         -d)    shift; opt_d=1 ;;
  72.         -n)    shift; opt_n=1; opt_v=1 ;;
  73.         -V)    shift; opt_V=1 ;;
  74.         -*)    echo "$0: unknown flag \"$1\"" >&2; exit 1 ;;
  75.         *)    break ;;
  76.     esac
  77. done
  78.  
  79. if [ "$opt_V" ]
  80. then
  81.     echo "$RCSID"
  82.     exit 0
  83. fi
  84.  
  85. opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}"
  86.  
  87. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  88.  
  89. makedev () {    # usage: makedev name [bcu] major minor owner group mode
  90.     if [ "$opt_v" ]
  91.     then    if [ "$opt_d" ]
  92.         then    echo "delete $1"
  93.         else    echo "create $1    $2 $3 $4 $5:$6 $7" 
  94.         fi
  95.     fi
  96.     if [ ! "$opt_n" ]
  97.     then    if [ "$opt_d" ]
  98.         then
  99.             rm -f $1
  100.         else
  101.             rm -f $1-
  102.             mknod $1- $2 $3 $4 &&
  103.             chown $5:$6 $1- &&
  104.             chmod $7 $1- &&
  105.             mv $1- $1
  106.         fi
  107.     fi
  108. }
  109. symlink () {    # usage: symlink name target
  110.     if [ "$opt_v" ]
  111.     then    if [ "$opt_d" ]
  112.         then    echo "delete $1"
  113.         else    echo "create $1    -> $2"
  114.         fi
  115.     fi
  116.     [ ! "$opt_n" ] && rm -f $1 &&
  117.     [ ! "$opt_d" ] && ln -s $2 $1
  118. }
  119.  
  120. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  121.  
  122. # Debian allows us to assume /bin/sh is a POSIX compliant shell, so go for it!
  123.  
  124. math () {
  125.     eval echo "\$(($*))"
  126. }
  127. index () {    # index string c
  128.     eval "I=\${1%$2*}"
  129.     eval echo "\${#I}"
  130. }
  131. suffix () {
  132.     eval echo "\${1#$2}"
  133. }
  134. strip () {
  135.     eval echo "\${1% $2 *} \${1#* $2 }"
  136. }
  137. first () {
  138.     eval echo "\${1:0:1}"
  139. }
  140. second () {
  141.     eval echo "\${1:1:1}"
  142. }
  143. substr () {
  144.     echo $1 | cut -c $2
  145. }
  146.  
  147. #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
  148.  
  149. devices=
  150. if [ ! -f $procfs/devices ]
  151. then
  152.     echo "$0: warning: can't read $procfs/devices" >&2
  153. else
  154.     exec 3<$procfs/devices
  155.     while read major device <&3
  156.     do
  157.         device=`echo $device | sed 's#/.*##'`
  158.         case "$major" in
  159.             Character|Block|'')
  160.                 ;;
  161.             *)
  162.                 eval "major_$device=$major"
  163.                 devices="$devices $device"
  164.                 ;;
  165.         esac
  166.     done
  167.     exec 3<&-
  168. fi
  169.  
  170. Major () {
  171.     device=$2
  172.     if [ "$opt_d" ]
  173.     then
  174.         echo -1    # don't care
  175.     else
  176.         eval echo \${major_$1:-\${device:?\"unknown major number for $1\"}}
  177.     fi
  178. }
  179.  
  180. cvt () {
  181.     while [ $# -ne 0 ]
  182.     do
  183.         case "$1" in
  184.             mem|tty|ttyp|cua|cub|cui)    ;;
  185.             hd)    (for d in a b c d e f g h ; do
  186.                     echo -n hd$d " "
  187.                  done) ; echo
  188.                 ;;
  189.             ide0)    echo hda hdb ;;
  190.             ide1)    echo hdc hdd ;;
  191.             ide2)    echo hde hdf ;;
  192.             ide3)    echo hdg hdh ;;
  193.             ide4)    echo hdi hdj ;;
  194.             ide5)    echo hdk hdl ;;
  195.             sd)    echo sda sdb sdc sdd ;;
  196.             dasd)   (for d in a b c d e f g h i j k l m \
  197.                     n o p q r s t u v w x y z ; do
  198.                     echo -n dasd$d " "
  199.                 done) ; echo
  200.                 ;;
  201.             raw)    echo raw ;;
  202.             sg)    echo sg ;;
  203.             sr)    echo scd ;;
  204.             st)    echo st0 ;;
  205.             xd)    echo xda xdb ;;
  206.             ad)    echo ada adb ;;
  207.             fd)    echo fd0 fd1 ;;
  208.             lp)    echo lp ;;
  209.             mt)    echo ftape ;;
  210.             qft)    echo ftape ;;
  211.             loop)    echo loop ;;
  212.             md)    echo md ;;
  213.             ibcs2)    echo ibcs2 ;;
  214.             tpqic02)    echo qic ;;
  215.             sound)        echo audio ;;
  216.             logiscan)    echo logiscan ;;
  217.             ac4096)        echo ac4096 ;;
  218.             hw)    echo helloworld ;;
  219.             sbpcd | sbpcd[123])    echo $1 ;;
  220.             joystick)    echo js ;;
  221.             input)    echo input ;;
  222.             apm_bios)    echo apm ;;
  223.             dcf)        echo dcf ;;
  224.             aztcd)        echo aztcd ;;
  225.             cm206cd)    echo cm206cd ;;
  226.             gscd)        echo gscd ;;
  227.             pcmcia)    ;; # taken care of by its own driver
  228.             ttyC)    echo cyclades ;;
  229.             isdn)    echo isdnmodem isdnbri dcbri ;;
  230.             vcs)    ;;
  231.             pty)    echo pty ;;
  232.             misc)    echo misc ;;
  233.             3dfx)    echo 3dfx ;;
  234.             agpgart)    echo agpgart ;;
  235.             microcode)    echo microcode ;;
  236.             ipmi|ipmikcs)    echo ipmi ;;
  237.             fb)    echo fb ;;
  238.             nb)    echo nb0 nb1 ;;
  239.             netlink)    echo netlink ;;
  240.             tap)    echo netlink ;;
  241.             hamradio)    echo hamradio ;;
  242.             snd)    ;;
  243.             ptm)    ;;
  244.             pts)    ;;
  245.             ttyS)    echo ttyS0 ttyS1 ttyS2 ttyS3 ;;
  246.             ttyI)    echo ttyI0 ttyI1 ttyI2 ttyI3 ;;
  247.             ircomm|irlpt)    irda ;;
  248.             ppp)    echo ppp ;;
  249.             usb)    echo usb ;;
  250.             lvm)    ;; # taken care of by LVM userspace tools
  251.             ramdisk)    echo ram ;;
  252.             *)    echo "$0: don't know what \"$1\" is" >&2 ;;
  253.         esac
  254.         shift
  255.     done
  256. }
  257.  
  258. for arg
  259. do
  260. #    case `cvt $arg` in
  261.     case $arg in
  262.     generic)
  263.         # pick the right generic-<arch> using dpkg's knowledge
  264.         case `dpkg --print-installation-architecture` in
  265.             alpha)
  266.                 $0 $opts generic-alpha
  267.                 ;;
  268.             arm)
  269.                 $0 $opts generic-arm
  270.                 ;;
  271.             hppa)
  272.                 $0 $opts generic-hppa
  273.                 ;;
  274.             i386)
  275.                 $0 $opts generic-i386
  276.                 ;;
  277.             ia64)
  278.                 $0 $opts generic-ia64
  279.                 ;;
  280.             m68k)
  281.                 $0 $opts generic-m68k
  282.                 ;;
  283.             mips)
  284.                 $0 $opts generic-mips
  285.                 ;;
  286.             mipsel)
  287.                 $0 $opts generic-mipsel
  288.                 ;;
  289.             powerpc)
  290.                 $0 $opts generic-powerpc
  291.                 ;;
  292.             s390)
  293.                 $0 $opts generic-s390
  294.                 ;;
  295.             sparc)
  296.                 $0 $opts generic-sparc
  297.                 ;;
  298.             *)
  299.                 echo "$0: no support for generic on this arch" >&2
  300.                 exit 1
  301.                 ;;
  302.         esac
  303.         ;;
  304.     generic-alpha)
  305.         $0 $opts std
  306.         $0 $opts fd
  307.         $0 $opts fd0 fd1
  308.         $0 $opts hda hdb hdc hdd
  309.         $0 $opts xda xdb
  310.         $0 $opts sda sdb sdc sdd
  311.         $0 $opts scd0 scd1
  312.         $0 $opts st0 st1
  313.         $0 $opts sg
  314.         $0 $opts pty
  315.         $0 $opts console
  316.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  317.         $0 $opts busmice
  318.         $0 $opts lp
  319.         $0 $opts par
  320.         $0 $opts audio
  321.         $0 $opts fb
  322.         ;;
  323.     generic-arm)
  324.         $0 $opts std
  325.         $0 $opts fd
  326.         $0 $opts fd0 fd1
  327.         $0 $opts hda hdb hdc hdd
  328.         $0 $opts xda xdb
  329.         $0 $opts sda sdb sdc sdd
  330.         $0 $opts scd0 scd1
  331.         $0 $opts st0 st1
  332.         $0 $opts sg
  333.         $0 $opts pty
  334.         $0 $opts console
  335.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  336.         $0 $opts busmice
  337.         $0 $opts lp
  338.         $0 $opts par
  339.         $0 $opts audio
  340.         $0 $opts fb
  341.         ;;
  342.     generic-hppa)
  343.         $0 $opts std
  344.         $0 $opts fd
  345.         $0 $opts fd0 fd1
  346.         $0 $opts sda sdb sdc sdd
  347.         $0 $opts scd0 scd1
  348.         $0 $opts st0 st1
  349.         $0 $opts sg
  350.         $0 $opts pty
  351.         $0 $opts console
  352.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  353.         $0 $opts busmice
  354.         $0 $opts lp
  355.         $0 $opts par
  356.         $0 $opts audio
  357.         $0 $opts fb
  358.         $0 $opts rtc
  359.         ;;
  360.     generic-i386)
  361.         $0 $opts std
  362.         $0 $opts fd
  363.         $0 $opts fd0 fd1
  364.         $0 $opts hda hdb hdc hdd
  365.         $0 $opts xda xdb
  366.         $0 $opts sda sdb sdc sdd
  367.         $0 $opts scd0 scd1
  368.         $0 $opts st0 st1
  369.         $0 $opts sg
  370.         $0 $opts pty
  371.         $0 $opts console
  372.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  373.         $0 $opts busmice
  374.         $0 $opts lp
  375.         $0 $opts par
  376.         $0 $opts audio
  377.         $0 $opts fb
  378.         $0 $opts isdn-io eda edb sonycd mcd mcdx cdu535
  379.         $0 $opts optcd sjcd cm206cd gscd 
  380.         $0 $opts lmscd sbpcd aztcd bpcd dac960 ida ataraid cciss
  381.         ;;
  382.     generic-ia64)
  383.         $0 $opts std
  384.         $0 $opts fd
  385.         $0 $opts fd0 fd1
  386.         $0 $opts hda hdb hdc hdd
  387.         $0 $opts xda xdb
  388.         $0 $opts sda sdb sdc sdd
  389.         $0 $opts scd0 scd1
  390.         $0 $opts st0 st1
  391.         $0 $opts sg
  392.         $0 $opts pty
  393.         $0 $opts console
  394.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5
  395.         $0 $opts busmice
  396.         $0 $opts lp
  397.         $0 $opts par
  398.         $0 $opts audio
  399.         $0 $opts fb
  400.         $0 $opts efirtc
  401.         ;;
  402.     generic-m68k)
  403.         $0 $opts std
  404.         $0 $opts fd
  405.         $0 $opts fd0 fd1
  406.         $0 $opts hda hdb hdc hdd
  407.         $0 $opts sda sdb sdc sdd
  408.         $0 $opts sg
  409.         $0 $opts ada adb adc add ade adf
  410.         $0 $opts pty
  411.         $0 $opts console
  412.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS5
  413.         $0 $opts m68k-mice
  414.         $0 $opts lp
  415.         $0 $opts par
  416.         $0 $opts nvram
  417.         $0 $opts audio
  418.         $0 $opts fb
  419.         ;;
  420.     generic-mips)
  421.         $0 $opts std
  422.         $0 $opts fd
  423.         $0 $opts fd0 fd1
  424.         $0 $opts hda hdb
  425.         $0 $opts sda sdb sdc sdd
  426.         $0 $opts scd0 scd1
  427.         $0 $opts st0 st1
  428.         $0 $opts sg
  429.         $0 $opts pty
  430.         $0 $opts console
  431.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 
  432.         $0 $opts lp
  433.         $0 $opts par
  434.         $0 $opts audio
  435.         $0 $opts fb
  436.         $0 $opts busmice
  437.         ;;
  438.     generic-mipsel)
  439.         $0 $opts std
  440.         $0 $opts fd
  441.         $0 $opts fd0 fd1
  442.         $0 $opts hda hdb
  443.         $0 $opts sda sdb sdc sdd
  444.         $0 $opts scd0 scd1
  445.         $0 $opts st0 st1
  446.         $0 $opts sg
  447.         $0 $opts pty
  448.         $0 $opts console
  449.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 
  450.         $0 $opts lp
  451.         $0 $opts par
  452.         $0 $opts audio
  453.         $0 $opts fb
  454.         $0 $opts rtc
  455.         ;;
  456.     generic-powerpc)
  457.         $0 $opts std
  458.         $0 $opts fd
  459.         $0 $opts fd0 fd1
  460.         $0 $opts hda hdb hdc hdd
  461.         $0 $opts sda sdb sdc sdd
  462.         $0 $opts scd0 scd1
  463.         $0 $opts st0 st1
  464.         $0 $opts sg
  465.         $0 $opts pty
  466.         $0 $opts console
  467.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  468.         $0 $opts busmice
  469.         $0 $opts m68k-mice
  470.         $0 $opts input
  471.         $0 $opts lp
  472.         $0 $opts par
  473.         $0 $opts nvram
  474.         $0 $opts audio
  475.         $0 $opts adb
  476.         $0 $opts fb
  477.         $0 $opts rtc
  478.         $0 $opts isdn-io
  479.         ;;
  480.     generic-s390)
  481.         $0 $opts std
  482.         $0 $opts fd
  483.         $0 $opts dasda dasdb dasdc dasdd dasde dasdf dasdg dasdh \
  484.             dasdi dasdj dasdk dasdl dasdm dasdn dasdo dasdp \
  485.             dasdq dasdr dasds dasdt dasdu dasdv dasdw dasdx \
  486.             dasdy dasdz
  487.         $0 $opts pty
  488.         $0 $opts consoleonly
  489.         $0 $opts rtc
  490.         ;;
  491.     generic-sparc)
  492.         $0 $opts std
  493.         $0 $opts fd0-bare fd1-bare
  494.         $0 $opts hda hdb hdc hdd
  495.         $0 $opts sda sdb sdc sdd
  496.         $0 $opts scd0 scd1
  497.         $0 $opts st0 st1
  498.         $0 $opts sg
  499.         $0 $opts pty
  500.         $0 $opts console
  501.         $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
  502.         $0 $opts busmice
  503.         $0 $opts fb
  504.         $0 $opts rtc
  505.         makedev kbd  c 11 0 $cons
  506.         makedev sunmouse  c 10 6 $mouse
  507.         symlink mouse sunmouse
  508.         makedev openprom  c 10 139 $mouse
  509.         ;;
  510.     local)
  511.         $0.local $opts
  512.         ;;
  513.     std)
  514.         makedev mem  c 1 1 $kmem
  515.         makedev kmem c 1 2 $kmem
  516.         makedev null c 1 3 $public
  517.         makedev port c 1 4 $kmem
  518.         makedev zero c 1 5 $public
  519.         symlink core $procfs/kcore
  520.         makedev full c 1 7 $public
  521.         makedev random c 1 8 $public
  522.         makedev urandom c 1 9 $readable
  523.         makedev tty  c 5 0 $tty
  524.         $0 $opts ram
  525.         $0 $opts loop
  526.         ;;
  527.     hamradio)
  528.         $0 $opts scc
  529.         $0 $opts bc
  530.         ;;
  531.     scc)
  532.         for unit in 0 1 2 3 4 5 6 7 
  533.         do
  534.             makedev scc$unit c 34 $unit $system
  535.         done
  536.         ;;
  537.     bc)    
  538.         for unit in 0 1 2 3
  539.         do
  540.             makedev bc$unit c 51 $unit $system
  541.         done
  542.         ;;
  543.     random)
  544.         makedev random c 1 8 $public
  545.         ;;
  546.     urandom)
  547.         makedev urandom c 1 9 $readable
  548.         ;;
  549.     ram)
  550.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
  551.             makedev ram$i  b 1 $i $disk
  552.         done
  553.         symlink ram ram1
  554.         ;;
  555.     ram[0-9]|ram1[0-6])
  556.         unit=`suffix $arg ram`
  557.         makedev ram$unit b 1 $unit $disk
  558.         ;;
  559.     initrd)
  560.         makedev initrd b 1 250 $disk
  561.         ;;
  562.     raw)
  563.         makedev raw c 162 0 $disk
  564.         symlink rawctl raw
  565.         for i in 1 2 3 4 5 6 7 8; do
  566.             makedev raw$i c 162 $i $disk
  567.         done
  568.         ;;
  569.     consoleonly)
  570.         makedev tty0 c 4 0 $cons
  571.         #    new kernels need a device, old ones a symlink... sigh
  572.         kern_rev1=`uname -r | awk -F'.' '{print $1}'`
  573.         kern_rev2=`uname -r | awk -F'.' '{print $2}'`
  574.         if [ $kern_rev1 -gt 2 ]
  575.         then
  576.             makedev console c 5 1 $cons
  577.         else
  578.             if [ $kern_rev1 -eq 2 -a $kern_rev2 -ge 1 ]
  579.             then
  580.                 makedev console c 5 1 $cons
  581.             else
  582.                 symlink console tty0
  583.             fi
  584.         fi
  585.         ;;
  586.     console)
  587.         $0 $opts consoleonly
  588.         major=`Major vcs 7`       # not fatal
  589.         [ "$major" ] && makedev vcs0 c $major 0 $vcs
  590.         symlink vcs vcs0
  591.         [ "$major" ] && makedev vcsa0 c $major 128 $vcs
  592.         symlink vcsa vcsa0
  593.         # individual vts
  594.         line=1
  595.         while [ $line -le $MAXVT -a $line -le 63 ]
  596.         do
  597.             makedev tty$line c 4 $line $tty
  598.             [ "$major" ] && makedev vcs$line c $major $line $vcs
  599.             [ "$major" ] && makedev vcsa$line c $major `math $line + 128` $vcs
  600.             line=`math $line + 1`
  601.         done
  602.         ;;
  603.     adb)
  604.         # pick the right arch device using dpkg's knowledge
  605.         case `dpkg --print-installation-architecture` in
  606.             powerpc)
  607.                 # ADB bus devices (char)
  608.                 makedev adb c 56 0 $mouse
  609.                 makedev adbmouse c 10 10 $mouse
  610.                 ;;
  611.             m68k)
  612.                 # ACSI disk 2, whole device (block)
  613.                 makedev adb b 28 16 $disk
  614.                 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  615.                 do
  616.                     minor=$(( 16 + $part ))
  617.                     makedev adb$part b 28 $minor $disk
  618.                 done
  619.                 ;;
  620.             *)
  621.                 echo "no support for adb on this arch" >&2
  622.                 exit 1
  623.                 ;;
  624.         esac
  625.         ;;
  626.     raw1394)
  627.         makedev raw1394 c 171 0 $disk
  628.         ;;
  629.     nvram)
  630.         makedev nvram c 10 144 $mouse
  631.         ;;
  632.     tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
  633.         line=`suffix $arg tty`
  634.         makedev tty$line c 4 $line $tty
  635.         ;;
  636.     ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
  637.         line=`suffix $arg ttyS`
  638.         minor=`math 64 + $line`
  639.         makedev ttyS$line c 4 $minor $dialout
  640.         ;;
  641.     pty[a-ep-z])
  642.         bank=`suffix $arg pty`
  643.         base=`index pqrstuvwxyzabcde $bank`
  644.         base=`math $base \* 16`
  645.         for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
  646.         do
  647.             j=`index 0123456789abcdef $i`
  648.             makedev pty$bank$i c 2 `math $base + $j` $tty
  649.             makedev tty$bank$i c 3 `math $base + $j` $tty
  650.         done
  651.         ;;
  652.     pty)
  653.         ptysufs=""
  654.         for i in p q r s t u v w x y z a b c d e
  655.         do
  656.             ptysufs="$ptysufs pty$i"
  657.         done
  658.         $0 $opts $ptysufs ptmx
  659.         ;;
  660.     ptmx)
  661.         # master pty multiplexer for 2.1 kernels
  662.         makedev ptmx c 5 2 $tty
  663.         ;;
  664.     cyclades|ttyC)
  665.         major1=`Major ttyC 19` || continue
  666.         #major2=`Major cub 20` || continue
  667.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
  668.                          16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
  669.         do
  670.             makedev ttyC$i c $major1 $i $dialout
  671.             #makedev cub$i c $major2 $i $dialout
  672.         done
  673.         ;;
  674.     stallion|ttyE)
  675.         major1=`Major ttyE 24` || continue
  676.         #major2=`Major cue 25` || continue
  677.         majorc=28
  678.         minor=0
  679.         until [ $minor -gt 256 ]
  680.         do
  681.             makedev ttyE$minor c $major1 $minor $dialout
  682.             #makedev cue$minor c $major2 $minor $dialout
  683.             minor=`math $minor + 1`
  684.         done
  685.         for i in 0 1 2 3
  686.         do
  687.             makedev staliomem$i c $majorc $i $private
  688.         done
  689.         ;;
  690.     chase|ttyH)
  691.         major1=`Major ttyH 17` || continue
  692.         #major2=`Major cuh 18` || continue
  693.         minor=0
  694.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  695.         do
  696.             makedev ttyH$minor c $major1 $minor $dialout
  697.             #makedev cuh$minor c $major2 $minor $dialout
  698.             minor=`math $minor + 1`
  699.         done
  700.         ;;
  701.     rocketport|ttyR)
  702.         major1=`Major ttyR 46` || continue
  703.         #major2=`Major cur 47` || continue
  704.         minor=0
  705.         until [ $minor -gt 64 ] # tell me if 64 is wrong
  706.         do
  707.             makedev ttyR$minor c $major1 $minor $dialout
  708.             #makedev cur$minor c $major2 $minor $dialout
  709.             minor=`math $minor + 1`
  710.         done
  711.         ;;
  712.     ttyV)
  713.         major1=`Major ttyV 105` || continue
  714.         #major2=`Major cuv 106` || continue
  715.         minor=0
  716.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  717.         do
  718.             makedev ttyV$minor c $major1 $minor $dialout
  719.             #makedev cuv$minor c $major2 $minor $dialout
  720.             minor=`math $minor + 1`
  721.         done
  722.         ;;
  723.     digi|ttyD)
  724.         major1=`Major ttyD 22` || continue
  725.         #major2=`Major cud 23` || continue
  726.         minor=0
  727.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  728.         do
  729.             makedev ttyD$minor c $major1 $minor $dialout
  730.             #makedev cud$minor c $major2 $minor $dialout
  731.             minor=`math $minor + 1`
  732.         done
  733.         ;;
  734.     specialix|ttyX)
  735.         major1=`Major ttyX 32` || continue
  736.         #major2=`Major cux 33` || continue
  737.         minor=0
  738.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  739.         do
  740.             makedev ttyX$minor c $major1 $minor $dialout
  741.             #makedev cux$minor c $major2 $minor $dialout
  742.             minor=`math $minor + 1`
  743.         done
  744.         ;;
  745.     specialixIO8|ttyW)
  746.         major1=`Major ttyW 75` || continue
  747.         #major2=`Major cuw 76` || continue
  748.         minor=0
  749.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  750.         do
  751.             makedev ttyW$minor c $major1 $minor $dialout
  752.             #makedev cuw$minor c $major2 $minor $dialout
  753.             minor=`math $minor + 1`
  754.         done
  755.         ;;
  756.     PAM|ttyM)
  757.         major1=`Major ttyM 79` || continue
  758.         #major2=`Major cum 80` || continue
  759.         minor=0
  760.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  761.         do
  762.             makedev ttyM$minor c $major1 $minor $dialout
  763.             #makedev cum$minor c $major2 $minor $dialout
  764.             minor=`math $minor + 1`
  765.         done
  766.         ;;
  767.     riscom|ttyL)
  768.         major=`Major ttyL 48` || continue
  769.         minor=0
  770.         until [ $minor -gt 16 ] # tell me if 16 is wrong
  771.         do
  772.             makedev ttyL$minor c $major $minor $dialout
  773.             minor=`math $minor + 1`
  774.         done
  775.         ;;
  776.     computone|ttyF)
  777.         major=`Major ttyF 71` || continue
  778.         #major2=`Major cuf 72` || continue
  779.         minor=0
  780.         until [ $minor -gt 255 ]
  781.         do
  782.             makedev ttyF$minor c $major $minor $dialout
  783.             #makedev cuf$minor c $major2 $minor $dialout
  784.             minor=`math $minor + 1`
  785.         done
  786.         major=73
  787.         for i in 0 4 8 12
  788.         do
  789.             makedev ip2ipl$i  c $major $i $private
  790.             makedev ip2stat$i c $major `math $i + 1` $private
  791.         done
  792.         ;;
  793.     ESP|ttyP)
  794.         major=`Major ttyP 57` || continue
  795.         #major2=`Major cup 58` || continue
  796.         minor=0
  797.         until [ $minor -gt 4 ] # tell me if 4 is wrong
  798.         do
  799.             makedev ttyP$minor c $major $minor $dialout
  800.             #makedev cup$minor c $major2 $minor $dialout
  801.             minor=`math $minor + 1`
  802.         done
  803.         ;;
  804.     COMX|comx)
  805.         major=`Major comx 88` || continue
  806.         minor=0
  807.         until [ $minor -gt 4 ] # tell me if 4 is wrong
  808.         do
  809.             makedev comx$minor c $major $minor $private
  810.             minor=`math $minor + 1`
  811.         done
  812.         ;;
  813.     isdnmodem|ttyI)
  814.         major1=`Major ttyI 43` || continue
  815.         #major2=`Major cui 44` || continue
  816.         minor=0
  817.         until [ $minor -gt 63 ]
  818.         do
  819.             makedev ttyI$minor c $major1 $minor $dialout
  820.             #makedev cui$minor c $major2 $minor $dialout
  821.             minor=`math $minor + 1`
  822.         done
  823.         ;;
  824.     isdnbri)
  825.         major=45
  826.         minor=0
  827.         until [ $minor -gt 63 ]
  828.         do
  829.             makedev isdn$minor c $major $minor $dialout
  830.             makedev isdnctrl$minor c $major `math $minor + 64` $dialout
  831.             makedev ippp$minor c $major `math $minor + 128` $dialout
  832.             minor=`math $minor + 1`
  833.         done
  834.         makedev isdninfo c $major 255 $private
  835.         ;;
  836.     dcbri)
  837.         major=52
  838.         for i in 0 1 2 3
  839.         do
  840.             makedev dcbri$i c $major $i $dialout
  841.         done
  842.         ;;
  843.     capi)
  844.         major=68
  845.         makedev capi20 c $major 0 $dialout
  846.         for i in 0 1 2 3 4 5 6 7 8 9
  847.         do
  848.             makedev capi20.0$i c $major `math $i + 1` $dialout
  849.         done
  850.         for i in 10 11 12 13 14 15 16 17 18 19
  851.         do
  852.             makedev capi20.$i c $major `math $i + 1` $dialout
  853.         done
  854.         ;;
  855.     ubd)
  856.         major=98
  857.         minor=0
  858.         until [ $minor -gt 255 ]
  859.         do
  860.             makedev ubd$minor b $major $minor $disk
  861.             minor=`math $minor + 1`
  862.         done
  863.         ;;
  864.     fb)
  865.         for i in 0 1 2 3 4 5 6 7
  866.         do
  867.             makedev fb$i c 29 `math 32 \* $i` $fb
  868.             makedev fb${i}current c 29 `math 32 \* $i` $fb
  869.             makedev fb${i}autodetect c 29 `math 32 \* $i + 1` $fb
  870.         done
  871.         ;;
  872.     fb[0-7])
  873.         dev=`suffix $arg fb`
  874.         base=`math 32 \* $dev`
  875.         makedev fb$dev c 29 $base $fb
  876.         makedev fb${dev}current c 29 $base $fb
  877.         makedev fb${dev}autodetect c 29 `math $base + 1` $fb
  878.         for i in 0 1 2 3 4 5 6 7
  879.         do
  880.             makedev fb${dev}user$i c 29 `math $base + 24 + $i` $fb
  881.         done
  882.         ;;
  883.     netlink|tap|tap[0-9]|tap1[0-5])
  884.         makedev route     c 36 0 $coda
  885.         makedev skip      c 36 1 $coda
  886.         makedev fwmonitor c 36 3 $coda
  887.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  888.         do
  889.             makedev tap$i c 36 `math $i + 16` $coda
  890.         done
  891.         ;;
  892.     lp)
  893.         major=`Major lp 6` || continue
  894.         makedev ${arg}0 c $major 0 $printer
  895.         makedev ${arg}1 c $major 1 $printer
  896.         makedev ${arg}2 c $major 2 $printer
  897.         ;;
  898.     par)
  899.         major=`Major lp 6` || continue
  900.         makedev ${arg}0 c $major 0 $printer
  901.         makedev ${arg}1 c $major 1 $printer
  902.         makedev ${arg}2 c $major 2 $printer
  903.         ;;
  904.     parport)
  905.         major=`Major parport 99` || continue
  906.         makedev ${arg}0 c $major 0 $printer
  907.         makedev ${arg}1 c $major 1 $printer
  908.         makedev ${arg}2 c $major 2 $printer
  909.         ;;
  910.     slm)
  911.         major=`Major slm 28` || continue
  912.         for i in 0 1 2 3
  913.         do
  914.             makedev slm c $major $i $printer
  915.         done
  916.         ;;
  917.     input)
  918.         major=`Major pcsp 13` || continue
  919.         mkdir -p input
  920.         for i in 0 1 2 3
  921.         do
  922.             makedev input/js$i c $major $i $mouse
  923.             makedev input/mouse$i c $major `math $i + 32` $mouse
  924.             makedev input/event$i c $major `math $i + 64` $mouse
  925.         done
  926.         makedev input/mice c $major 63 $mouse
  927.         ;;
  928.     busmice)
  929.         major=`Major mouse 10` || continue
  930.         makedev logibm      c $major 0 $mouse
  931.         makedev psaux     c $major 1 $mouse
  932.         makedev inportbm  c $major 2 $mouse
  933.         makedev atibm     c $major 3 $mouse
  934.         makedev jbm       c $major 4 $mouse
  935.         ;;
  936.     m68k-mice)
  937.         major=`Major mouse 10` || continue
  938.         makedev amigamouse c $major 4 $mouse
  939.         makedev atarimouse c $major 5 $mouse
  940.         makedev amigamouse1 c $major 7 $mouse
  941.         makedev adbmouse  c $major 10 $mouse
  942.         ;;
  943.     3dfx)
  944.         major=`Major $arg 107` || continue
  945.         makedev $arg    c $major 0 $video
  946.         ;;
  947.     agpgart)
  948.         major=`Major $arg 10` || continue
  949.         makedev $arg    c $major 175 $video
  950.         ;;
  951.     intel_rng)
  952.         major=`Major $arg 10` || continue
  953.         makedev $arg    c $major 183 $private
  954.         ;;
  955.     cpu|microcode)
  956.         mkdir -p cpu
  957.         makedev cpu/microcode c 10 184 $private
  958.         for i in 0 1 2 3
  959.         do
  960.             mkdir -p cpu/$i
  961.             makedev cpu/$i/msr   c 202 $i $private
  962.             makedev cpu/$i/cpuid c 203 $i $private
  963.         done
  964.         ;;
  965.     ipmi|ipmikcs)
  966.         major=`Major ipmikcs 10` || continue
  967.         makedev ipmikcs    c $major 173 $private
  968.         ;;
  969.     irda)
  970.         for i in 0 1
  971.         do
  972.             makedev ircomm$i c 161 $i $dialout
  973.             makedev irlpt$i  c 161 `math $i + 16` $printer
  974.         done
  975.         ;;
  976.     misc)
  977.         major=`Major mouse 10` || continue
  978.         makedev logibm      c $major 0 $mouse
  979.         makedev psaux     c $major 1 $mouse
  980.         makedev inportbm  c $major 2 $mouse
  981.         makedev atibm     c $major 3 $mouse
  982.         makedev jbm       c $major 4 $mouse
  983.         makedev amigamouse c $major 4 $mouse
  984.         makedev atarimouse c $major 5 $mouse
  985.         makedev sunmouse  c $major 6 $mouse
  986.         makedev amigamouse1 c $major 7 $mouse
  987.         makedev smouse    c $major 8 $mouse
  988.         makedev pc110pad  c $major 9 $mouse
  989.         makedev adbmouse  c $major 10 $mouse
  990.         makedev beep      c $major 128 $mouse
  991.         makedev modreq    c $major 129 $mouse
  992.         makedev watchdog  c $major 130 $mouse
  993.         makedev temperature c $major 131 $mouse
  994.         makedev hwtrap    c $major 132 $mouse
  995.         makedev exttrp    c $major 133 $mouse
  996.         makedev apm_bios  c $major 134 $mouse
  997.         makedev rtc       c $major 135 $mouse
  998.         makedev openprom  c $major 139 $mouse
  999.         makedev relay8    c $major 140 $mouse
  1000.         makedev relay16   c $major 141 $mouse
  1001.         makedev msr       c $major 142 $mouse
  1002.         makedev pciconf   c $major 143 $mouse
  1003.         makedev nvram     c $major 144 $mouse
  1004.         makedev hfmodem   c $major 145 $mouse
  1005.         makedev led       c $major 151 $mouse
  1006.         makedev mergemem  c $major 153 $mouse
  1007.         makedev pmu       c $major 154 $mouse
  1008.         ;;
  1009.     smapi|thinkpad)
  1010.         major=`Major mouse 10` || continue
  1011.         makedev smapi     c $major 170 $mouse
  1012.         symlink thinkpad smapi
  1013.         ;;
  1014.         rtc)
  1015.         major=`Major mouse 10` || continue
  1016.         makedev rtc       c $major 135 $mouse
  1017.         ;;
  1018.     efirtc)
  1019.         major=`Major mouse 10` || continue
  1020.         makedev efirtc    c $major 136 $mouse
  1021.          ;;
  1022.     js)
  1023.         major=`Major Joystick 13` || continue
  1024.         for unit in 0 1 2 3
  1025.         do
  1026.             makedev js$unit c $major $unit $readable
  1027.             makedev djs$unit c $major `math $unit + 128` $readable
  1028.         done
  1029.         ;;
  1030.     fd[0-7]-bare)
  1031.         sarg="${arg%-bare}" 
  1032.         major=`Major fd 2` || continue
  1033.         base=`suffix $sarg fd`
  1034.         if [ $base -ge 4 ]
  1035.         then
  1036.             base=`math $base + 124`
  1037.         fi
  1038.         makedev ${sarg} b $major $base $floppy
  1039.         ;;
  1040.     fd[0-7])
  1041.         major=`Major fd 2` || continue
  1042.         base=`suffix $arg fd`
  1043.         if [ $base -ge 4 ]
  1044.         then
  1045.             base=`math $base + 124`
  1046.         fi
  1047.         makedev ${arg} b $major $base $floppy
  1048.         makedev ${arg}d360  b $major `math $base +  4` $floppy
  1049.         makedev ${arg}h1200 b $major `math $base +  8` $floppy
  1050.         makedev ${arg}u360  b $major `math $base + 12` $floppy
  1051.         makedev ${arg}u720  b $major `math $base + 16` $floppy
  1052.         makedev ${arg}h360  b $major `math $base + 20` $floppy
  1053.         makedev ${arg}h720  b $major `math $base + 24` $floppy
  1054.         makedev ${arg}u1440 b $major `math $base + 28` $floppy
  1055.         makedev ${arg}u2880 b $major `math $base + 32` $floppy
  1056.         makedev ${arg}CompaQ b $major `math $base + 36` $floppy
  1057.  
  1058.         makedev ${arg}h1440 b $major `math $base + 40` $floppy
  1059.         makedev ${arg}u1680 b $major `math $base + 44` $floppy
  1060.         makedev ${arg}h410  b $major `math $base + 48` $floppy
  1061.         makedev ${arg}u820  b $major `math $base + 52` $floppy
  1062.         makedev ${arg}h1476 b $major `math $base + 56` $floppy
  1063.         makedev ${arg}u1722 b $major `math $base + 60` $floppy
  1064.         makedev ${arg}h420  b $major `math $base + 64` $floppy
  1065.         makedev ${arg}u830  b $major `math $base + 68` $floppy
  1066.         makedev ${arg}h1494 b $major `math $base + 72` $floppy
  1067.         makedev ${arg}u1743 b $major `math $base + 76` $floppy
  1068.         makedev ${arg}h880  b $major `math $base + 80` $floppy
  1069.         makedev ${arg}u1040 b $major `math $base + 84` $floppy
  1070.         makedev ${arg}u1120 b $major `math $base + 88` $floppy
  1071.         makedev ${arg}h1600 b $major `math $base + 92` $floppy
  1072.         makedev ${arg}u1760 b $major `math $base + 96` $floppy
  1073.         makedev ${arg}u1920 b $major `math $base + 100` $floppy
  1074.         makedev ${arg}u3200 b $major `math $base + 104` $floppy
  1075.         makedev ${arg}u3520 b $major `math $base + 108` $floppy
  1076.         makedev ${arg}u3840 b $major `math $base + 112` $floppy
  1077.         makedev ${arg}u1840 b $major `math $base + 116` $floppy
  1078.         makedev ${arg}u800  b $major `math $base + 120` $floppy
  1079.         makedev ${arg}u1600 b $major `math $base + 124` $floppy
  1080.         ;;
  1081.     ed[a-b])
  1082.         major=`Major ed 36` || continue
  1083.         unit=`suffix $arg ed`
  1084.         base=`index ab $unit`
  1085.         base=`math $base \* 64`
  1086.         makedev ed$unit b $major $base $disk
  1087.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
  1088.         do
  1089.             makedev ed$unit$part b $major `math $base + $part` $disk
  1090.         done
  1091.         ;;
  1092.     hd[a-b])
  1093.         major=`Major ide0` || major=`Major hd 3` || continue
  1094.         unit=`suffix $arg hd`
  1095.         base=`index ab $unit`
  1096.         base=`math $base \* 64`
  1097.         makedev hd$unit b $major $base $disk
  1098.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1099.         do
  1100.             makedev hd$unit$part b $major `math $base + $part` $disk
  1101.         done
  1102.         ;;
  1103.     hd[c-d])
  1104.         major=`Major ide1 22` || continue
  1105.         unit=`suffix $arg hd`
  1106.         base=`index cd $unit`
  1107.         base=`math $base \* 64`
  1108.         makedev hd$unit b $major $base $disk
  1109.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1110.         do
  1111.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1112.         done
  1113.         ;;
  1114.     hd[e-f])
  1115.         major=`Major ide2 33` || continue
  1116.         unit=`suffix $arg hd`
  1117.         base=`index ef $unit`
  1118.         base=`math $base \* 64`
  1119.         makedev hd$unit b $major $base $disk
  1120.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1121.         do
  1122.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1123.         done
  1124.         ;;
  1125.     hd[g-h])
  1126.         major=`Major ide3 34` || continue
  1127.         unit=`suffix $arg hd`
  1128.         base=`index gh $unit`
  1129.         base=`math $base \* 64`
  1130.         makedev hd$unit b $major $base $disk
  1131.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1132.         do
  1133.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1134.         done
  1135.         ;;
  1136.     hd[i-j])
  1137.         major=`Major ide4 56` || continue
  1138.         unit=`suffix $arg hd`
  1139.         base=`index ij $unit`
  1140.         base=`math $base \* 64`
  1141.         makedev hd$unit b $major $base $disk
  1142.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1143.         do
  1144.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1145.         done
  1146.         ;;
  1147.     hd[k-l])
  1148.         major=`Major ide5 57` || continue
  1149.         unit=`suffix $arg hd`
  1150.         base=`index kl $unit`
  1151.         base=`math $base \* 64`
  1152.         makedev hd$unit b $major $base $disk
  1153.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1154.         do
  1155.             makedev hd$unit$part b $major $(( $base + $part )) $disk
  1156.         done
  1157.         ;;
  1158.     ht0)
  1159.         major=`Major ht0 37` || continue
  1160.         # Only one IDE tape drive is currently supported; ht0.
  1161.         makedev ht0 c $major 0 $tape
  1162.         makedev nht0 c $major 128 $tape
  1163.         ;;
  1164.     pt)
  1165.         major=`Major pt 96` || continue
  1166.         for i in 0 1 2 3
  1167.         do
  1168.             makedev pt$i c $major $i $tape
  1169.             makedev npt$i c $major `math $i + 128` $tape
  1170.         done
  1171.         ;;
  1172.     xd[a-d])
  1173.         major=`Major xd 13` || continue
  1174.         unit=`suffix $arg xd`
  1175.         base=`index abcd $unit`
  1176.         base=`math $base \* 64`
  1177.         makedev xd$unit b $major $base $disk
  1178.         for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
  1179.         do
  1180.             makedev xd$unit$part b $major $(( $base + $part )) $disk
  1181.         done
  1182.         ;;
  1183.     sd[a-z])
  1184.         major=`Major sd 8` || continue
  1185.         unit=`suffix $arg sd`
  1186.         base=`index abcdefghijklmnopqrstuvwxyz $unit`
  1187.         base=$(( $base * 16 ))
  1188.         if [ $base -lt 256 ]; then
  1189.             major=8
  1190.         else
  1191.             major=65
  1192.             base=$(( $base - 256 ))
  1193.         fi
  1194.         makedev sd$unit b $major $base $disk
  1195.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1196.         do
  1197.             minor=$(( $base + $part ))
  1198.             makedev sd$unit$part b $major $minor $disk
  1199.         done
  1200.         ;;
  1201.     sd[a-d][a-z])
  1202.         unit=`suffix $arg sd`
  1203.         unitmaj=`first $unit`
  1204.         unitmin=`second $unit`
  1205.         basemaj=`index Xabcd $unitmaj`
  1206.         basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
  1207.         basemaj=`math $basemaj \* 416`
  1208.         basemin=`math $basemin \* 16`
  1209.         base=`math $basemaj + $basemin`
  1210.         basemaj=`math $base / 256`
  1211.         base=`math $base % 256`
  1212.         major=`math basemaj \+ 64`
  1213.         if [ $major -gt 71 ]; then
  1214.             echo "$0: don't know how to make device \"$arg\"" >&2
  1215.             exit 0
  1216.         fi
  1217.         makedev sd$unit b $major $base $disk
  1218.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1219.         do
  1220.             minor=$(( $base + $part ))
  1221.             makedev sd$unit$part b $major $minor $disk
  1222.         done
  1223.                 ;;
  1224.     dasd[a-z])
  1225.         major=`Major dasd 94` || continue
  1226.         unit=`suffix $arg dasd`
  1227.         base=`index abcdefghijklmnopqrstuvwxyz $unit`
  1228.         base=$(( $base * 4 ))
  1229.         if [ $base -lt 256 ]; then
  1230.             major=94
  1231.         else
  1232.             major=65
  1233.             base=$(( $base - 256 ))
  1234.         fi
  1235.         makedev dasd$unit b $major $base $disk
  1236.         # Not yet implemented. (Feb. 8, 2001)
  1237.         # for part in 1 2 3
  1238.         for part in 1
  1239.         do
  1240.             minor=$(( $base + $part ))
  1241.             makedev dasd$unit$part b $major $minor $disk
  1242.         done
  1243.         ;;
  1244.     ad[a-p])
  1245.         major=`Major ad 28` || continue
  1246.         unit=`suffix $arg ad`
  1247.         base=`index abcdefghijklmnop $unit`
  1248.         base=`math $base \* 16`
  1249.         makedev ad$unit b $major $base $disk
  1250.         for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1251.         do
  1252.             minor=$(( $base + $part ))
  1253.             makedev ad$unit$part b $major $minor $disk
  1254.         done
  1255.         ;;
  1256.     dac960)
  1257.         for ctr in 0 1 2 3 4 5 6 7
  1258.         do
  1259.             $0 $opts dac960.$ctr
  1260.         done
  1261.         ;;
  1262.     dac960.[0-7])
  1263.         [ -d rd ] || {
  1264.             mkdir rd
  1265.             chown root.root rd
  1266.             chmod 755 rd
  1267.         }
  1268.         unit=`suffix $arg dac960.`
  1269.             major=`math 48 + $unit`
  1270.             minor=0
  1271.             for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
  1272.                 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  1273.             do
  1274.             makedev rd/c${unit}d${ld} b $major $minor $disk
  1275.             minor=`math $minor + 1`
  1276.             for part in 1 2 3 4 5 6 7
  1277.             do
  1278.                 makedev rd/c${unit}d${ld}p$part b $major $minor $disk
  1279.                 minor=`math $minor + 1`
  1280.             done
  1281.             done
  1282.         ;;
  1283.     ataraid)
  1284.         for ctr in 0 1 2 # 3 4 5 6 7
  1285.         do
  1286.             $0 $opts ataraid.$ctr
  1287.         done
  1288.         ;;
  1289.     ataraid.[0-7])
  1290.         [ -d ataraid ] || {
  1291.             mkdir ataraid
  1292.             chown root.root ataraid
  1293.             chmod 755 ataraid
  1294.         }
  1295.                 unit=`suffix $arg ataraid.`
  1296.                 major=114
  1297.                 minor=`math $unit \* 16`
  1298.                 makedev ataraid/d${unit} b $major $minor $disk
  1299.                 for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1300.                 do
  1301.                    minor=`math $minor + 1`
  1302.                    makedev ataraid/d${unit}p$part b $major $minor $disk
  1303.                 done
  1304.          ;;
  1305.     ida)
  1306.         for ctr in 0 1 2 # 3 4 5 6 7
  1307.         do
  1308.             $0 $opts ida.$ctr
  1309.         done
  1310.         ;;
  1311.     ida.[0-7])
  1312.         [ -d ida ] || {
  1313.             mkdir ida
  1314.             chown root.root ida
  1315.             chmod 755 ida
  1316.         }
  1317.         unit=`suffix $arg ida.`
  1318.         major=`math 72 + $unit`
  1319.         minor=0
  1320.         for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1321.         do
  1322.             makedev ida/c${unit}d${ld} b $major $minor $disk
  1323.             minor=`math $minor + 1`
  1324.             for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1325.             do
  1326.             makedev ida/c${unit}d${ld}p$part b $major $minor $disk
  1327.             minor=`math $minor + 1`
  1328.             done
  1329.         done
  1330.         ;;
  1331.     cciss)
  1332.         for ctr in 0 1 2 # 3 4 5 6 7
  1333.         do
  1334.             $0 $opts cciss.$ctr
  1335.         done
  1336.         ;;
  1337.     cciss.[0-7])
  1338.         [ -d cciss ] || {
  1339.             mkdir cciss
  1340.             chown root.root cciss
  1341.             chmod 755 cciss
  1342.         }
  1343.         unit=`suffix $arg cciss.`
  1344.         major=`math 104 + $unit`
  1345.         minor=0
  1346.         for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1347.         do
  1348.             makedev cciss/c${unit}d${ld} b $major $minor $disk
  1349.             minor=`math $minor + 1`
  1350.             for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1351.             do
  1352.             makedev cciss/c${unit}d${ld}p$part b $major $minor $disk
  1353.             minor=`math $minor + 1`
  1354.             done
  1355.         done
  1356.         ;;
  1357.     rom)
  1358.         major=`Major rom 31`
  1359.         for i in 0 1 2 3 4 5 6 7
  1360.         do
  1361.             makedev rom$i    b $major $i $disk
  1362.             makedev rrom$i   b $major `math $i +8` $disk
  1363.             makedev flash$i  b $major `math $i +16` $disk
  1364.             makedev rflash$i b $major `math $i +24` $disk
  1365.         done
  1366.         ;;
  1367.     nb[0-7])
  1368.         major=`Major nbd 43` || continue
  1369.         minor=`suffix $arg nb`
  1370.         makedev nb$minor b $major $minor $disk
  1371.         ;;
  1372.     loop)
  1373.         for part in 0 1 2 3 4 5 6 7
  1374.         do
  1375.             makedev loop$part b 7 $part $disk
  1376.         done
  1377.         ;;
  1378.     md)
  1379.         major=`Major md 9` || continue
  1380.         for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1381.         do
  1382.             makedev md$part b $major $part $disk
  1383.         done
  1384.         ;;
  1385.     st[0-7])
  1386.         major=`Major st 9`
  1387.         unit=`suffix $arg st`
  1388.         makedev st${unit}   c $major $unit $tape
  1389.         makedev nst${unit}  c $major `math 128 + $unit` $tape
  1390.  
  1391.         makedev st${unit}l  c $major `math 32 + $unit` $tape
  1392.         makedev nst${unit}l c $major `math 160 + $unit` $tape
  1393.  
  1394.         makedev st${unit}m  c $major `math 64 + $unit` $tape
  1395.         makedev nst${unit}m c $major `math 192 + $unit` $tape
  1396.  
  1397.         makedev st${unit}a  c $major `math 96 + $unit` $tape
  1398.         makedev nst${unit}a c $major `math 224 + $unit` $tape
  1399.         ;;
  1400.     qic)
  1401.         major=`Major tpqic02 12`
  1402.         makedev ntpqic11   c $major   2 $tape
  1403.         makedev tpqic11    c $major   3 $tape
  1404.         makedev ntpqic24   c $major   4 $tape
  1405.         makedev tpqic24    c $major   5 $tape
  1406.         makedev ntpqic120  c $major   6 $tape
  1407.         makedev tpqic120   c $major   7 $tape
  1408.         makedev ntpqic150  c $major   8 $tape
  1409.         makedev tpqic150   c $major   9 $tape
  1410.         makedev rmt8       c $major   6 $tape
  1411.         makedev rmt16      c $major   8 $tape
  1412.         makedev tape-d     c $major 136 $tape
  1413.         makedev tape-reset c $major 255 $tape
  1414.         $0 $opts qft
  1415.         ;;
  1416.     ftape)
  1417.         major=`Major qft 27` || continue
  1418.         for unit in 0 1 2 3
  1419.         do
  1420.             makedev qft$unit     c $major $unit $tape
  1421.             makedev nqft$unit    c $major `math $unit + 4` $tape
  1422.             makedev zqft$unit    c $major `math $unit + 16` $tape
  1423.             makedev nzqft$unit   c $major `math $unit + 20` $tape
  1424.             makedev rawqft$unit  c $major `math $unit + 32` $tape
  1425.             makedev nrawqft$unit c $major `math $unit + 36` $tape
  1426.         done
  1427.         symlink ftape qft0
  1428.         symlink nftape nqft0
  1429.         ;;
  1430.     sr|scd|scd-all)
  1431.         major=`Major sr 11` || continue
  1432.         for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1433.         do
  1434.             makedev scd$unit b $major $unit $cdrom
  1435.             symlink sr$unit scd$unit
  1436.         done
  1437.         ;;
  1438.     pktcdvd)
  1439.         major=97
  1440.         for unit in 0 1 2 3
  1441.         do
  1442.             makedev pktcdvd$unit b $major $unit $cdrom
  1443.         done
  1444.         ;;
  1445.     cfs0)
  1446.         makedev cfs0 c 67 0 $coda
  1447.         ;;
  1448.     scd[0-9]|scd[0-1][0-9])
  1449.         major=`Major sr 11` || continue
  1450.         unit=`suffix $arg scd`
  1451.         makedev scd$unit b $major $unit $cdrom
  1452.         ln -f scd$unit sr$unit
  1453.         ;;
  1454.     ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3])
  1455.         major=43
  1456.         unit=`suffix $arg ttyI`
  1457.         makedev ttyI$unit c $major $unit $dialout
  1458.         ;;
  1459.     ppp)
  1460.         major=108
  1461.         makedev ppp c $major 0 $dip
  1462.         ;;
  1463.     ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3])
  1464.         major=45
  1465.         unit=`suffix $arg ippp`
  1466.         minor=`math $unit + 128`
  1467.         makedev ippp$unit c $major $minor $dialout
  1468.         ;;
  1469.     isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3])
  1470.         major=45
  1471.         unit=`suffix $arg isdn`
  1472.         minor=`math $unit + 0`
  1473.         makedev isdn$unit c $major $minor $dialout
  1474.         ;;
  1475.     isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3])
  1476.         major=45
  1477.         unit=`suffix $arg isdnctrl`
  1478.         minor=`math $unit + 64`
  1479.         makedev isdnctrl$unit c $major $minor $dialout
  1480.         ;;
  1481.     isdninfo)
  1482.         makedev isdninfo c 45 255 $private
  1483.         ;;
  1484.     isdn-tty)
  1485.         major=43
  1486.         for unit in 0 1 2 3 4 5 6 7
  1487.         do
  1488.             makedev ttyI$unit c $major $unit $dialout
  1489.         done
  1490.         ;;
  1491.     isdn-ippp)
  1492.         major=45
  1493.         for unit in 0 1 2 3 4 5 6 7
  1494.         do
  1495.             makedev ippp$unit c $major `math $unit + 128` $dialout
  1496.         done
  1497.         ;;
  1498.     isdn-io)
  1499.         for unit in 0 1 2 3 4 5 6 7
  1500.         do
  1501.             makedev isdn$unit c 45 $unit $dialout
  1502.             makedev isdnctrl$unit c 45 `math $unit + 64` $dialout
  1503.             makedev ippp$unit c 45 `math $unit + 128` $dialout
  1504.         done
  1505.         makedev isdninfo c 45 255 $dialout
  1506.         ;;
  1507.     sonycd)
  1508.         major=`Major sonycd 15` || continue
  1509.         makedev $arg b $major 0 $cdrom
  1510.         ;;
  1511.     mcd)
  1512.         major=`Major mcd 23` || continue
  1513.         makedev $arg b $major 0 $cdrom
  1514.         ;;
  1515.     mcdx|mcdx[0-4])
  1516.         major=`Major $arg 20` || continue
  1517.         for unit in 0 1 2 3 4
  1518.         do
  1519.             makedev mcdx$unit b $major $unit $cdrom
  1520.         done
  1521.         test -r mcdx || symlink mcdx mcdx0
  1522.         ;;
  1523.     cdu535)
  1524.         makedev $arg b 24 0 $cdrom
  1525.         ;;
  1526.     lmscd)
  1527.         makedev $arg b 24 0 $cdrom
  1528.         ;;
  1529.     sbpcd|sbpcd[123])
  1530.         major=`Major $arg 25` || continue
  1531.         base=`suffix ${arg}0 sbpcd`
  1532.         for minor in 0 1 2 3
  1533.         do
  1534.             # XXX
  1535.             unit=$(substr 0123456789abcdef $(( $base * 4 + $minor + 1 )) )
  1536.             makedev sbpcd$unit b $major $minor $cdrom
  1537.         done
  1538.         [ $arg = sbpcd ] && symlink $arg ${arg}0
  1539.         ;;
  1540.     aztcd)
  1541.         major=`Major $arg 29` || continue
  1542.         makedev ${arg}0 b $major 0 $cdrom
  1543.         ;;
  1544.     cm206cd)
  1545.         major=`Major $arg 30` || continue
  1546.         makedev ${arg}0 b $major 0 $cdrom
  1547.         ;;
  1548.     gscd)
  1549.         major=`Major $arg 16` || continue
  1550.         makedev ${arg}0 b $major 0 $cdrom
  1551.         ;;
  1552.     pcd)
  1553.         for unit in 0 1 2 3 
  1554.         do
  1555.             makedev pcd$unit b 46 $unit $cdrom
  1556.         done
  1557.         ;;
  1558.     bpcd)
  1559.         makedev $arg b 41 0 $cdrom
  1560.         ;;
  1561.     optcd)
  1562.         makedev $arg b 17 0 $cdrom
  1563.         ;;
  1564.     sjcd)
  1565.         makedev $arg b 18 0 $cdrom
  1566.         ;;
  1567.     cfs|coda)
  1568.         makedev cfs0 c 67 0 $private
  1569.         ;;
  1570.     xfs|arla)
  1571.         makedev xfs0 c 103 0 $private
  1572.         ;;
  1573.     logiscan)
  1574.         major=`Major logiscan` || continue
  1575.         makedev $arg c $major 0 $scanner
  1576.         ;;
  1577.     toshiba)
  1578.         major=`Major $arg 10` || continue
  1579.         makedev $arg c $major 181 root root 0666
  1580.         ;;
  1581.     m105scan)
  1582.         major=`Major m105` || continue
  1583.         makedev $arg c $major 0 $scanner
  1584.         ;;
  1585.     ac4096)
  1586.         major=`Major ac4096` || continue
  1587.         makedev $arg c $major 0 $scanner
  1588.         ;;
  1589.     audio)
  1590.         major=`Major sound 14`
  1591.         makedev mixer      c $major  0 $audio
  1592.         makedev mixer1     c $major 16 $audio
  1593.         makedev mixer2     c $major 32 $audio
  1594.         makedev mixer3     c $major 48 $audio
  1595.         makedev sequencer  c $major  1 $audio
  1596.         makedev midi00     c $major  2 $audio
  1597.         makedev midi01     c $major 18 $audio
  1598.         makedev midi02     c $major 34 $audio
  1599.         makedev midi03     c $major 50 $audio
  1600.         makedev dsp        c $major  3 $audio
  1601.         makedev dsp1       c $major 19 $audio
  1602.         makedev dsp2       c $major 35 $audio
  1603.         makedev dsp3       c $major 51 $audio
  1604.         makedev audio      c $major  4 $audio
  1605.         makedev audio1     c $major 20 $audio
  1606.         makedev audio2     c $major 36 $audio
  1607.         makedev audio3     c $major 52 $audio
  1608.         makedev sndstat    c $major  6 $audio
  1609.         makedev audioctl   c $major  7 $audio
  1610.         major=31
  1611.         makedev mpu401data c $major 0  $audio
  1612.         makedev mpu401stat c $major 1  $audio
  1613.         major=35
  1614.         for i in 0 1 2 3
  1615.         do
  1616.             makedev midi$i  c $major $i $audio
  1617.             makedev rmidi$i c $major `math $i + 64` $audio
  1618.             makedev smpte$i c $major `math $i + 128` $audio
  1619.         done
  1620.         ;;
  1621.     pcaudio)
  1622.         major=`Major pcsp 13` || continue
  1623.         makedev pcmixer c $major 0 $audio
  1624.         makedev pcsp    c $major 3 $audio
  1625.         makedev pcaudio c $major 4 $audio
  1626.         ;;
  1627.     video|video4linux|v4l|radio)
  1628.         # video4linux api includes radio, teletext, etc.
  1629.         major=`Major video 81` || continue
  1630.         minor=0
  1631.         until [ $minor -gt 63 ]
  1632.         do
  1633.             makedev video$minor c $major $minor $video
  1634.             makedev radio$minor c $major `math $minor + 64` $video
  1635.             minor=`math $minor + 1`
  1636.         done
  1637.         symlink radio radio0
  1638.         minor=0
  1639.         until [ $minor -gt 31 ]
  1640.         do
  1641.             makedev vtx$minor c $major `math $minor + 192` $video
  1642.             makedev vbi$minor c $major `math $minor + 224` $video
  1643.             minor=`math $minor + 1`
  1644.         done
  1645.         symlink video video0
  1646.         symlink vbi vbi0
  1647.         major=82
  1648.         minor=0
  1649.         until [ $minor -gt 1 ]
  1650.         do
  1651.             makedev winradio$minor c $major $minor $video
  1652.             minor=`math $minor + 1`
  1653.         done
  1654.         major=83
  1655.         makedev vtx     c $major 0 $video
  1656.         makedev vttuner c $major 16 $video
  1657.         ;;
  1658.     i2c)
  1659.         # making it possible to create an arbitrary number of i2c
  1660.         # devices might be good, but 8 should suffice for now
  1661.         major=`Major i2c 89` || continue
  1662.         minor=0
  1663.         until [ $minor -gt 7 ] 
  1664.         do
  1665.             makedev i2c-$minor c $major $minor $private
  1666.             minor=`math $minor + 1`
  1667.         done
  1668.         ;;
  1669.     tlk)
  1670.         major=102
  1671.         minor=0
  1672.         until [ $minor -gt 3 ] # tell me if 3 is wrong...
  1673.         do
  1674.             makedev tlk$minor c $major $minor $video
  1675.             minor=`math $minor + 1`
  1676.         done
  1677.         ;;
  1678.     srnd)
  1679.         makedev srnd0 c 110 0 $video
  1680.         makedev srnd1 c 110 1 $video
  1681.         ;;
  1682.     fgrab)
  1683.         makedev mmetfgrab c 40 0 $video
  1684.         makedev wvisfgrab c 26 0 $video
  1685.         for i in 0 1 # more?
  1686.         do
  1687.             makedev iscc$i    c 93 $i $video
  1688.             makedev isccctl$i c 93 `math $i + 128` $video
  1689.         done
  1690.         for i in 0 1 # more?
  1691.         do
  1692.             makedev dcxx$i c 94 $i $video
  1693.         done
  1694.         ;;
  1695.     sg|sg-all)
  1696.         major=`Major sg 21`
  1697.         for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1698.         do
  1699.             makedev sg$unit c $major $unit $scsi
  1700.         done
  1701.         ;;
  1702.     pg)
  1703.         major=`Major pg 97`
  1704.         for unit in 0 1 2 3
  1705.         do
  1706.             makedev pg$unit c $major $unit $scsi
  1707.         done
  1708.         ;;
  1709.     fd)
  1710.         # not really devices, we use the /proc filesystem
  1711.         symlink fd     $procfs/self/fd
  1712.         symlink stdin  fd/0
  1713.         symlink stdout fd/1
  1714.         symlink stderr fd/2
  1715.         ;;
  1716.     ibcs2)
  1717.         major=`Major ibcs2 30` || continue
  1718.         makedev socksys c $major 0 $ibcs2
  1719.         symlink nfsd socksys
  1720.         makedev spx     c $major 1 $ibcs2
  1721.         symlink X0R null
  1722.         ;;
  1723.     netlink)
  1724.         major=36
  1725.         makedev route c $major 0 $private
  1726.         makedev skip  c $major 1 $private
  1727.         ;;
  1728.     enskip)
  1729.         major=64
  1730.         makedev enskip c $major 0 $private
  1731.         ;;
  1732.     ipfilt*)
  1733.         major=95
  1734.         makedev ipl     c $major 0 $private
  1735.         makedev ipnat   c $major 1 $private
  1736.         makedev ipstate c $major 2 $private
  1737.         makedev ipauth  c $major 3 $private
  1738.         ;;
  1739.     qng)
  1740.         makedev qng c 77 0 $private
  1741.         ;;
  1742.     apm)
  1743.         major=`Major mouse 10` || continue
  1744.         makedev apm_bios  c $major 134 $mouse
  1745.         ;;
  1746.     dcf)
  1747.         major=`Major dcf` || continue
  1748.         makedev $arg c $major 0 $system
  1749.         ;;
  1750.     helloworld)
  1751.         major=`Major hw` || continue
  1752.         makedev helloworld c $major 0 $public
  1753.         ;;
  1754.     ipsec)
  1755.         # For the Free S/WAN (http://www.xs4all.nl/~freeswan/)
  1756.         # implementation of IPSEC
  1757.         makedev ipsec c 36 10 $ipsec
  1758.         ;;
  1759.     comedi)
  1760.         major=98
  1761.         for minor in 0 1 2 3
  1762.         do
  1763.             makedev comedi$minor c $major $minor $public
  1764.         done
  1765.         ;;
  1766.     usb)
  1767.         mkdir -p usb
  1768.         major=180
  1769.         for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1770.         do
  1771.             makedev usb/lp$i c $major $i $printer
  1772.             makedev usb/mouse$i c $major `math $i + 16` $mouse
  1773.             makedev usb/ez$i c $major `math $i + 32` $system
  1774.             makedev usb/scanner$i c $major `math $i + 48` $scanner
  1775.             makedev ttyACM$i c 166 $i $dialout
  1776.             makedev ttyUSB$i c 188 $i $dialout
  1777.         done
  1778.         makedev usb/rio500 c $major 64 $audio
  1779.         ;;
  1780.     paride)
  1781.                 major=45
  1782.                 for unit in a b c d
  1783.         do
  1784.                     base=`index abcd $unit`
  1785.                     base=`math $base \* 16`
  1786.                     makedev pd$unit b $major $base $disk
  1787.                     for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  1788.                     do
  1789.                         makedev pd$unit$part b $major $(( $base + $part )) $disk
  1790.                     done
  1791.         done
  1792.         for i in 0 1 2 3
  1793.         do
  1794.             makedev pcd$i b 46 $i $cdrom
  1795.             makedev pf$i  b 47 $i $floppy
  1796.         done
  1797.                 ;;
  1798.     update)
  1799.         if [ ! "$devices" ]
  1800.         then
  1801.             echo "$0: don't appear to have any devices" >&2
  1802.             continue
  1803.         fi
  1804.         if [ "$opt_d" ]
  1805.         then
  1806.             echo "$0: can't delete an update" >&2
  1807.             continue
  1808.         fi
  1809.         create=
  1810.         delete=
  1811.         devs="$devices"
  1812.         if [ -f DEVICES ]
  1813.         then
  1814.             exec 3<DEVICES
  1815.             while read device major <&3
  1816.             do
  1817.                 eval now=\$major_$device
  1818.                 if [ "$now" = "" ]
  1819.                 then
  1820.                     delete="$delete `cvt $device`"
  1821.                     continue
  1822.                 elif [ "$now" != $major ]
  1823.                 then
  1824.                     create="$create "`cvt $device`
  1825.                 fi
  1826.                 devs=`strip " $devs " $device`
  1827.             done
  1828.             exec 3<&-
  1829.         fi
  1830.         create="$create "`cvt $devs`
  1831.         [ "$delete" != "" ] && $0 $opts -d $delete
  1832.         [ "$create" != " " ] && $0 $opts $create
  1833.         [ "$opt_n" ] && continue
  1834.         for device in $devices
  1835.         do
  1836.             if [ "`cvt $device`" ]
  1837.             then
  1838.                 eval echo $device \$major_$device
  1839.             fi
  1840.         done > DEVICES
  1841.         ;;
  1842.     *)
  1843.         echo "$0: don't know how to make device \"$arg\"" >&2
  1844.         exit 1
  1845.         ;;
  1846.     esac
  1847. done
  1848.  
  1849. exit 0
  1850.